﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Tibet.Logica
{
    public class ReglaDeDocumentacion:Regla
    {
        private string _documentarclase;
        public string documentarclase
        {
            get { return _documentarclase; }
            set { _documentarclase = value; }
        }

        private string _documentarestructura;
        public string documentarestructura
        {
            get { return _documentarestructura; }
            set { _documentarestructura = value; }
        }
        
        private string _documentarmetodo;
        public string documentarmetodo
        {
            get { return _documentarmetodo; }
            set { _documentarmetodo = value; }
        }
        
        private string _documentarboilerplate;
        public string documentarboilerplate
        {
            get { return _documentarboilerplate; }
            set { _documentarboilerplate = value; }
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para la documentación de las clases
         */
        public bool ValidarDocumentarClase(string Nombre)
        {
            bool resp = false;

            //Si la documentación de la clase cumple con el estándar de documentación
            //definido devuelve true
            if (Nombre.Equals("documentacionClase")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para la documentación de las estructuras de control
         */
        public bool ValidarDocumentarEstructura(string Nombre)
        {
            bool resp = false;

            //Si la documentación de la estructura de control cumple con el estándar de 
            //documentación definido devuelve true
            if (Nombre.Equals("documentacionEstructura")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para la documentación de los métodos
         */
        public bool ValidarDocumentarMetodo(string Nombre)
        {
            bool resp = false;

            //Si la documentación del método cumple con el estándar de documentación 
            //definido devuelve true
            if (Nombre.Equals("documentacionMetodo")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para la documentación boilerplate
         */
        public bool ValidarDocumentarBoilerplate(string Nombre)
        {
            bool resp = false;

            //Si la documentación boilerplate cumple con el estándar de documentación 
            //definido devuelve true
            if (Nombre.Equals("documentacionBoilerplate")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para extraer todas las reglas almacenadas
         */
        public List<ReglaDeDocumentacion> consultarReglas()
        {
            ReglaDeDocumentacion r = new ReglaDeDocumentacion();

            List<ReglaDeDocumentacion> lista = new List<ReglaDeDocumentacion>();

            //bd
            r.nombreregla = "Regla1";
            r.documentarclase = "formato";
            r.documentarestructura = "formato";
            r.documentarmetodo = "formato";
            r.documentarboilerplate = "formato";

            lista.Add(r);

            return lista;
        }

        /**
         * Método para extraer las reglas por nombre
         */
        public ReglaDeDocumentacion consultarReglaPorNombre(string nombre)
        {
            ReglaDeDocumentacion r = new ReglaDeDocumentacion();

            //bd
            nombre = "Regla1";
            r.nombreregla = nombre;

            return r;
        } 
    }
}